package demo;

import io.netty.util.HashedWheelTimer;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

/**
 * 描述
 *
 * @author 韦鹏
 * @date 2022/11/13 13:05
 */
@Slf4j
public class HashedWheelTimerDemo {
    // 订单10秒自动关闭


    public static void main(String[] args) throws InterruptedException {
        log.debug("开始下单，等待超时取消");
        // 时间论片间隔100ms,包含512个论片
        HashedWheelTimer timer = new HashedWheelTimer(100, TimeUnit.MILLISECONDS, 512);
        timer.newTimeout(timeout -> {
            // 时间到的时候执行这个任务
            CompletableFuture.runAsync(() -> {
                log.debug("1订单超时，自动取消订单....");
            });
        }, 10, TimeUnit.SECONDS);

        timer.newTimeout(timeout -> {
            // 时间到的时候执行这个任务
            CompletableFuture.runAsync(() -> {
                log.debug("2订单超时，自动取消订单....");
            });
        }, 3, TimeUnit.SECONDS);

        timer.newTimeout(timeout -> {
            // 时间到的时候执行这个任务
            CompletableFuture.runAsync(() -> {
                log.debug("3订单超时，自动取消订单....");
            });
        }, 5, TimeUnit.SECONDS);

    }

}
